﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Clinica_Frba.Listados_Estadisticos.queries
{
    class BonosDeFarmaciaVencidosPorAfiliado : Query
    {
        private static string BonosDeFarmaciaVencidosPorAfiliadoQuery = "SELECT TOP 5 * FROM USUARIO;";

        public BonosDeFarmaciaVencidosPorAfiliado()
            : base
                ("Bonos de farmacia vencidos por afiliado", BonosDeFarmaciaVencidosPorAfiliadoQuery, null)
        {
        }

        override public String SqlQuery(int semestre, int year)
        {
            string fechaat = publico.fecha;
            string currentDate = "CONVERT(datetime,'" + fechaat + "',103)";

            if (semestre == 1)
            {
                return " select TOP 5 C.ID_AFIL as Afiliado, SUM(CASE WHEN B.FECHA_Vencimiento IS NOT NULL AND B.FECHA_Vencimiento >= " + currentDate + " and DATEPART ( MONTH , B.Fecha_Vencimiento ) BETWEEN 1 AND 6 and DATEPART ( YEAR , B.Fecha_Vencimiento ) = " + year + " THEN 1 ELSE 0 END) AS Vencimientos, " +
" SUM(CASE WHEN B.FECHA_Vencimiento IS NOT NULL AND B.FECHA_Vencimiento >= " + currentDate + " and DATEPART ( MONTH , B.Fecha_Vencimiento ) = 1 and DATEPART ( YEAR , B.Fecha_Vencimiento ) = " + year + " THEN 1 ELSE 0 END) as mes_1, " +
" SUM(CASE WHEN B.FECHA_Vencimiento IS NOT NULL AND B.FECHA_Vencimiento >= " + currentDate + " and DATEPART ( MONTH , B.Fecha_Vencimiento ) = 2 and DATEPART ( YEAR , B.Fecha_Vencimiento ) = " + year + " THEN 1 ELSE 0 END) as mes_2, " +
" SUM(CASE WHEN B.FECHA_Vencimiento IS NOT NULL AND B.FECHA_Vencimiento >= " + currentDate + " and DATEPART ( MONTH , B.Fecha_Vencimiento ) = 3 and DATEPART ( YEAR , B.Fecha_Vencimiento ) = " + year + " THEN 1 ELSE 0 END) as mes_3, " +
" SUM(CASE WHEN B.FECHA_Vencimiento IS NOT NULL AND B.FECHA_Vencimiento >= " + currentDate + " and DATEPART ( MONTH , B.Fecha_Vencimiento ) = 4 and DATEPART ( YEAR , B.Fecha_Vencimiento ) = " + year + " THEN 1 ELSE 0 END) as mes_4, " +
" SUM(CASE WHEN B.FECHA_Vencimiento IS NOT NULL AND B.FECHA_Vencimiento >= " + currentDate + " and DATEPART ( MONTH , B.Fecha_Vencimiento ) = 5 and DATEPART ( YEAR , B.Fecha_Vencimiento ) = " + year + " THEN 1 ELSE 0 END) as mes_5, " +
" SUM(CASE WHEN B.FECHA_Vencimiento IS NOT NULL AND B.FECHA_Vencimiento >= " + currentDate + " and DATEPART ( MONTH , B.Fecha_Vencimiento ) = 6 and DATEPART ( YEAR , B.Fecha_Vencimiento ) = " + year + " THEN 1 ELSE 0 END) as mes_6 " +
" FROM AFILIADO A LEFT JOIN COMPRA C ON A.ID_AFIL = C.ID_AFIL LEFT JOIN BONO_COMPRA BC ON C.ID_COMPRA = BC.ID_COMPRA LEFT JOIN BONO_FARMACIA B ON BC.ID_BONO_F = B.ID_BONO " +
//" WHERE B.FECHA_Vencimiento is not null " +
//" AND B.FECHA_Vencimiento >= " + currentDate + " " +
//" and DATEPART ( YEAR , B.Fecha_Vencimiento ) = " + year +
//" and DATEPART ( MONTH , B.Fecha_Vencimiento ) <= 6 " +
" GROUP BY C.ID_AFIL  " +
" ORDER BY Vencimientos DESC " +
" ; ";
            }
            else
            {
                return " select TOP 5 C.ID_AFIL as Afiliado, SUM(CASE WHEN B.FECHA_Vencimiento IS NOT NULL AND B.FECHA_Vencimiento >= " + currentDate + " and DATEPART ( MONTH , B.Fecha_Vencimiento ) BETWEEN 7 AND 12 and DATEPART ( YEAR , B.Fecha_Vencimiento ) = " + year + " THEN 1 ELSE 0 END) AS Vencimientos, " +
" SUM(CASE WHEN B.FECHA_Vencimiento IS NOT NULL AND B.FECHA_Vencimiento >= " + currentDate + " and DATEPART ( MONTH , B.Fecha_Vencimiento ) = 7 and DATEPART ( YEAR , B.Fecha_Vencimiento ) = " + year + " THEN 1 ELSE 0 END) as mes_7, " +
" SUM(CASE WHEN B.FECHA_Vencimiento IS NOT NULL AND B.FECHA_Vencimiento >= " + currentDate + " and DATEPART ( MONTH , B.Fecha_Vencimiento ) = 8 and DATEPART ( YEAR , B.Fecha_Vencimiento ) = " + year + " THEN 1 ELSE 0 END) as mes_8, " +
" SUM(CASE WHEN B.FECHA_Vencimiento IS NOT NULL AND B.FECHA_Vencimiento >= " + currentDate + " and DATEPART ( MONTH , B.Fecha_Vencimiento ) = 9 and DATEPART ( YEAR , B.Fecha_Vencimiento ) = " + year + " THEN 1 ELSE 0 END) as mes_9, " +
" SUM(CASE WHEN B.FECHA_Vencimiento IS NOT NULL AND B.FECHA_Vencimiento >= " + currentDate + " and DATEPART ( MONTH , B.Fecha_Vencimiento ) = 10 and DATEPART ( YEAR , B.Fecha_Vencimiento ) = " + year + " THEN 1 ELSE 0 END) as mes_10, " +
" SUM(CASE WHEN B.FECHA_Vencimiento IS NOT NULL AND B.FECHA_Vencimiento >= " + currentDate + " and DATEPART ( MONTH , B.Fecha_Vencimiento ) = 11 and DATEPART ( YEAR , B.Fecha_Vencimiento ) = " + year + " THEN 1 ELSE 0 END) as mes_11, " +
" SUM(CASE WHEN B.FECHA_Vencimiento IS NOT NULL AND B.FECHA_Vencimiento >= " + currentDate + " and DATEPART ( MONTH , B.Fecha_Vencimiento ) = 12 and DATEPART ( YEAR , B.Fecha_Vencimiento ) = " + year + " THEN 1 ELSE 0 END) as mes_12 " +
" FROM AFILIADO A LEFT JOIN COMPRA C ON A.ID_AFIL = C.ID_AFIL LEFT JOIN BONO_COMPRA BC ON C.ID_COMPRA = BC.ID_COMPRA LEFT JOIN BONO_FARMACIA B ON BC.ID_BONO_F = B.ID_BONO " +
//" WHERE B.FECHA_Vencimiento is not null " +
//" AND B.FECHA_Vencimiento >= " + currentDate + " " +
//" and DATEPART ( YEAR , B.Fecha_Vencimiento ) = " + year +
//" and DATEPART ( MONTH , B.Fecha_Vencimiento ) > 6 " +
" GROUP BY C.ID_AFIL  " +
" ORDER BY Vencimientos DESC " +
" ; ";
            }
        }


    }
}
